English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساس

تحكم في العملية C++

وظيفة مخصصة C++

مبادئ توجيهية C++ للاعداد والمتغيرات

مبادئ توجيهية C++

فئات C++ وغيرها من الأجرام

المؤشرات C++

الوراثة C++

تعليمية STL C++

دليل C++

استخدام وظيفة C++ map operator[] ومثال

STL map (المسح) C++

C ++ map استخدام []استخدام مفتاح معينمفتاح قيمةزيارة عناصر map.

إنه يشبهat()الوظيفة. الفرق بينها هو أنه إذا لم يكن المفتاح المطلوب موجودًا في map، يتم إطلاق استثناء؛ من ناحية أخرى، إذا لم يكن المفتاح موجودًا في map، فإنهoperator[]إدراج المفتاح في map.

النحو

اعتباراً من مفتاح القيمةk،النحو هو:

mapped_type& operator[](const key_type& k); // قبل C++ 11
mapped_type& operator[](const key_type& k); // بدءاً من C++ 11
mapped_type& operator[](key_type&& k); // بدءاً من C++ 11

المتغيرات

k:مفتاح القيمة لتحديد عنصر قيمة map.

الناتج

يستخدم هذا مفتاح القيمة لاسترداد استدعاء قيمة عنصر map.

مثال 1

دعونا نرى مثالاً بسيطاً لاستدعاء العنصر.

#include <iostream>
#include <map>
using namespace std;
int main() 
{
  
   map<char, int> m = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5},
            };
   cout << "Map يحتوي على العناصر التالية" << endl;
   cout << "m['a'] = " << m['a'] << endl;
   cout << "m['b'] = " << m['b'] << endl;
   cout << "m['c'] = " << m['c'] << endl;
   cout << "m['d'] = " << m['d'] << endl;
   cout << "m['e'] = " << m['e'] << endl;
   return 0;
}

الناتج:

يحتوي Map على العناصر التالية
m['a'] = 1
m['b'] = 2
m['c'] = 3
m['d'] = 4
m['e'] = 5

في هذا، يتم استخدام دالة operator [] لاستدعاء عناصر map.

مثال 2

دعونا نرى مثالاً بسيطاً باستخدام مفتاح القيمة لإضافة العناصر.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<int,string> mymap = {
                { 101, "" },
                { 102, "" },
                { 103, "" } };
  mymap[101] = "w3codebox"; 
  mymap[102] = ".";
  mymap[103] = "com";
  //طبع القيمة المتعلقة بمفتاح 101، أي w3codebox
  cout<<mymap[101]; 
  //طبع القيمة المتعلقة بمفتاح 102، أي .
  cout<<mymap[102];
  //طبع القيمة المتعلقة بمفتاح 103، أي com
  cout<<mymap[103];
  return 0;
}

الناتج:

oldtoolbag.com

في المثال السابق، تم استخدام operator [] لضيف عنصرًا جديدًا باستخدام المفتاح المرتبط بقيمة في الوقت المناسب.

مثال 3

دعونا نرى مثال بسيط لتحديث القيمة المرتبطة بالمفتاح.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<int,string> mymap = {
                { 100, "Nikita"},
                { 200, "Deep" }};
                { 300, "Priya" },
                { 400, "Suman" },
                { 500, "Aman" }};
                
  cout<<"العناصر هي:" <<endl;
  for (auto& x: mymap) {
    	cout << x.first << ": "<< x.second << '\n';
  }
  mymap[100] = "Nidhi"; // يتم تغيير القيمة المرتبطة بالمفتاح 100 إلى Nidhi
  mymap[300] = "Pinku"; // يتم تغيير القيمة المرتبطة بالمفتاح 300 إلى Pinku
  mymap[500] = "Arohi"; // يتم تغيير القيمة المرتبطة بالمفتاح 500 إلى Arohi
  
  
  cout<<"\nالعناصر المعدلة هي:" <<endl;
  for (auto& x: mymap) {
    	cout << x.first << ": "<< x.second << '\n';
  }
  
  return 0;
}

الناتج:

العناصر هي:
100: Nikita
200: Deep
300: Priya
400: Suman
500: Aman
العناصر المعدلة هي:
100: Nidhi
200: Deep
300: Pinku
400: Suman
500: Arohi

في المثال السابق، تم استخدام وظيفة operator [] لتغيير القيمة المرتبطة بمفتاحها.

مثال 4

دعونا نرى مثال بسيط لنفهم الفرق بين operator [] و at()。

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<char,string> mp = {
                { 'a',"Java"},
                { 'b', "C++" },
                { 'c', "Python" }};
            
    cout<<endl<<mp['a'];
    cout<<endl<<mp['b'];
    cout<<endl<<mp['c'];
    
     mp['d'] = "SQL";           
     cout<<endl<<mp['d'];
     
    try {
        mp.at('z'); 
          //ليس هناك مفتاح لهذا القيمة z في map، سيتم إلقاء استثناء       
    catch(const out_of_range &e) {
        cout << endl << "\nاستثناء النطاق المحدد " << e.what();
    }
return 0;
}

الناتج:

Java
C++
Python
SQL
استثناء النطاق المحدد map::at

في المثال السابق، عندما نستخدم دالة at()، فإنها ترمي استثناء out_of_range، لأن هناك لا قيمة لـ z في خريطة، بينما عند استخدام operator [] لضبط العنصر في المفتاح d، لأن لا يوجد مفتاح في الخريطة له قيمة 'd'، فإنه سيضيف عنصرًا جديدًا في الخريطة بمفتاح 'd' وقيمة 'SQL'.

STL map (المسح) C++